package com.woniuxy.article.mapper;/**
 * @Description：
 * @Author：曹杰克
 * @CreateTime：2022/10/19 19:57
 */

import com.hc.entity.Comment;
import com.woniuxy.article.mapper.provider.CommentSqlProvider;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 *@Description：
 *@CreateTime：2022/10/19 19:57
 *@Author：曹杰克
 */
@Mapper
public interface CommentMapper {

    /**
     * 根据文章的id获取文章的所有评论
     * @param paperId
     * @return
     */
    @Select("select * from hc_comment where paper_id=#{paperId}")
    List<Comment> getByPaperId(int paperId);

    @Select("select likenum from hc_comment where id=#{id}")
    int getLikeNum(int id);

    @Select("select unlikenum from hc_comment where id=#{id}")
    int getDisLikeNum(int id);
    /**
     * 添加评论
     * @param comment
     */
    @Insert("insert into hc_comment (paper_id,text,fid,likenum,unlikenum,status,user_id) values (#{paper.id},#{text},#{fid},#{likenum},#{unlikenum},#{status},#{user.id})")
    void addCommentByPaperIdAndComentId(Comment comment);

    /**
     * 更新点赞数量
     * @param
     */
    @Update("update hc_comment set likenum=likenum+1 where id =#{id}")
    boolean addCommentAgreeByComentId(int commentId);

    @Update("update hc_comment set likenum=likenum-1 where id =#{id}")
    boolean reCommentAgreeByComentId(int commentId);

    /**
     * 更新踩数量
     * @param comment
     */
    @Update("update hc_comment set unlikenum=#{unlikenum} where id =#{id}")
    void updateCommentdisAgreeByComentId(Comment comment);

    /**
     * 评论置顶
     * @param
     */
    @Update("update hc_comment set status='y' where id =#{id}")
    void setTop(int id);

    /**
     * 将所有评论变为非置顶
     * @param paperId
     */
    @Update("update hc_comment set status='n' where paper_id=#{paperId}")
    void setdown(int paperId);

    /**
     * 根据条件更新
     * @param comment
     */
    @UpdateProvider(type=CommentSqlProvider.class,method = "updateCommentByCondition")
     void updateByCondition(Comment comment);

    @Select("select * from hc_comment where status='y' and paper_id=#{paperid}")
    Comment getTopComment(int paperid);

    @Update("update hc_comment set status='n' where id=#{id}")
    void downTop(int id);
}
